Slack の関連ページ(ブックマーク)を操作できる Bookmarks API を触ってみた
はじめに
こんにちは、サービスグロースチームの筧です。
皆さんは、Slack の関連ページ(ブックマーク)機能を使っていますか? 各チャンネルの上部にある「+関連するページを追加する」ボタンから、ブラウザのブックマーク機能のように特定 URL を設定できる機能です。 チャンネルに参加するメンバーがよく使う URL を設定しておくと大変便利です。
メッセージと関連ページのリンクをピン留めする | Slack
少し前に以下のブログを書いた際は、関連ページ(ブックマーク)機能を操作する Slack API は用意されていませんでした。
Google Apps Script で緊急対応時の Slack 操作を自動化してみた | DevelopersIO
しかし、最近 Slack API のドキュメントを眺めていたところ、2022年3月頃に追加されていたことを発見しました。 せっかくなので、今回は当該 API を触ってみようと思います。
やってみた
ブログ執筆時点では以下のメソッドが公開されていました。
- bookmarks.add
- Add bookmark to a channel.
- bookmarks.edit
- Edit bookmark.
- bookmarks.list
- List bookmark for the channel.
- bookmarks.remove
- Remove bookmark from the channel.
今回は bookmarks.add メソッド を触ってみたいと思います。
bookmarks.add メソッド
チャンネルに関連ページ(ブックマーク)を追加するメソッドです。
Facts に記載の Required scopes を確認すると、Bot tokens と User tokens のいずれでも bookmarks:write が必要とのことです。 どちらの tokens を利用するかは自由ですが、Slack アプリに予め当該スコープを設定ください。
Arguments の記載内容によれば、以下の引数は必須です。
Argumentsd | bookmarks.add method | Slack
- token: Slack アプリの OAuth & Permissions に記載の OAuth Token(Bot か User かは自由)
- channel_id: 関連ページ(ブックマーク)の追加先チャンネル
- title: 登録する関連ページ(ブックマーク)の名前
- type: 関連ページ(ブックマーク)のタイプ(※)
※ ブログ執筆時点は type に指定できるのは link のみでした。他の type も今後追加されるとのことです。
Note At this current moment, the Bookmarks API only accepts the link type. Acceptance of the remaining types coming soon!
Usage info | bookmarks.add method | Slack
手軽に Slack API の公式ページに用意されている Tester を使って試してみましょう。以下の URL にアクセスします。
Tester | bookmarks.add | Slackmethod
Arguments の記載内容で確認した引数を入力して、Test Method ボタンをクリックします。 成功すれば、Tester の API response で 「"ok": true」と表示されます。 対象チャンネルにアクセスすると、以下の通り関連ページ(ブックマーク)が追加できたことが確認できました!
参考までに Google App Script で実行する例を紹介します。 予め実行する Google App Script のプロパティに利用する Slack アプリの OAuth Token を登録しておきましょう。
プロパティ サービス | Apps Script | Google Developers
コード例は以下です。
// Google App Script のプロパティから Slack アプリの OAuth Token を読み込み const props = PropertiesService.getScriptProperties(); const SLACK_TOKEN = props.getProperty("SLACK_TOKEN"); function addBookmarks(channelId, title, link) { //https://api.slack.com/methods/bookmarks.add let methodUrl = "https://slack.com/api/bookmarks.add"; let payload = { token: SLACK_TOKEN, channel_id: channelId, title: title, type: "link", link: link, }; let option = { method: "POST", payload: payload, }; UrlFetchApp.fetch(methodUrl, option); } // 引数の値は仮です。公式ドキュメントの値を参照しています。 function testAddBookmarks() { try { addBookmarks("C03RL5D9Y6Q", "bookmark-1", "https://google.com"); } catch (error) { Logger.log(error); } }
おわりに
最後まで読んでいただきありがとうございます。
チャンネルに関連ページ(ブックマーク)を追加する API が公開されたことで、冒頭で紹介した緊急対応時の Slack 操作を自動化するツールも、パワーアップできそうです。 本ブログが皆さんにとって少しでも役に立っていると幸いです。
それではまた!